< Summary

Class:GDX.Tables.StableTable
Assembly:GDX
File(s):D:/BuildAgent/work/GDX-Documentation/Projects/GDX_Development/Packages/com.dotbunny.gdx/GDX/Tables/StableTable.cs
Covered lines:0
Uncovered lines:925
Coverable lines:925
Total lines:1456
Line coverage:0% (0 of 925)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:143
Method coverage:0% (0 of 143)

Coverage History

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
StableTable()0%2100%
GetDataVersion()0%2100%
GetColumnCount()0%2100%
GetRowCount()0%2100%
GetAllRowDescriptions()0%20400%
GetRowDescription(...)0%12300%
GetRowDescription(...)0%2100%
GetColumnDescription(...)0%30500%
GetColumnDescription(...)0%2100%
GetAllColumnDescriptions()0%12300%
SetColumnName(...)0%2100%
GetColumnName(...)0%2100%
GetColumnNameRef(...)0%2100%
AddRow(...)0%2101400%
AddRows(...)0%3801900%
AddRows(...)0%3801900%
RemoveRow(...)0%6200%
AddColumn(...)0%9923100%
RemoveColumn(...)0%9303000%
SetString(...)0%2100%
SetBool(...)0%2100%
SetChar(...)0%2100%
SetSByte(...)0%2100%
SetByte(...)0%2100%
SetShort(...)0%2100%
SetUShort(...)0%2100%
SetInt(...)0%2100%
SetUInt(...)0%2100%
SetLong(...)0%2100%
SetULong(...)0%2100%
SetFloat(...)0%2100%
SetDouble(...)0%2100%
SetVector2(...)0%2100%
SetVector3(...)0%2100%
SetVector4(...)0%2100%
SetVector2Int(...)0%2100%
SetVector3Int(...)0%2100%
SetQuaternion(...)0%2100%
SetRect(...)0%2100%
SetRectInt(...)0%2100%
SetColor(...)0%2100%
SetLayerMask(...)0%2100%
SetBounds(...)0%2100%
SetBoundsInt(...)0%2100%
SetHash128(...)0%2100%
SetGradient(...)0%2100%
SetAnimationCurve(...)0%2100%
SetObject(...)0%2100%
GetString(...)0%2100%
GetBool(...)0%2100%
GetChar(...)0%2100%
GetSByte(...)0%2100%
GetByte(...)0%2100%
GetShort(...)0%2100%
GetUShort(...)0%2100%
GetInt(...)0%2100%
GetUInt(...)0%2100%
GetLong(...)0%2100%
GetULong(...)0%2100%
GetFloat(...)0%2100%
GetDouble(...)0%2100%
GetVector2(...)0%2100%
GetVector3(...)0%2100%
GetVector4(...)0%2100%
GetVector2Int(...)0%2100%
GetVector3Int(...)0%2100%
GetQuaternion(...)0%2100%
GetRect(...)0%2100%
GetRectInt(...)0%2100%
GetColor(...)0%2100%
GetLayerMask(...)0%2100%
GetBounds(...)0%2100%
GetBoundsInt(...)0%2100%
GetHash128(...)0%2100%
GetGradient(...)0%2100%
GetAnimationCurve(...)0%2100%
GetObject(...)0%2100%
GetStringRef(...)0%2100%
GetBoolRef(...)0%2100%
GetCharRef(...)0%2100%
GetSbyteRef(...)0%2100%
GetByteRef(...)0%2100%
GetShortRef(...)0%2100%
GetUshortRef(...)0%2100%
GetIntRef(...)0%2100%
GetUintRef(...)0%2100%
GetLongRef(...)0%2100%
GetUlongRef(...)0%2100%
GetFloatRef(...)0%2100%
GetDoubleRef(...)0%2100%
GetVector2Ref(...)0%2100%
GetVector3Ref(...)0%2100%
GetVector4Ref(...)0%2100%
GetVector2IntRef(...)0%2100%
GetVector3IntRef(...)0%2100%
GetQuaternionRef(...)0%2100%
GetRectRef(...)0%2100%
GetRectIntRef(...)0%2100%
GetColorRef(...)0%2100%
GetLayerMaskRef(...)0%2100%
GetBoundsRef(...)0%2100%
GetBoundsIntRef(...)0%2100%
GetHash128Ref(...)0%2100%
GetGradientRef(...)0%2100%
GetAnimationCurveRef(...)0%2100%
GetObjectRef(...)0%2100%
GetStringColumn(...)0%2100%
GetBoolColumn(...)0%2100%
GetCharColumn(...)0%2100%
GetSbyteColumn(...)0%2100%
GetByteColumn(...)0%2100%
GetShortColumn(...)0%2100%
GetUshortColumn(...)0%2100%
GetIntColumn(...)0%2100%
GetUintColumn(...)0%2100%
GetLongColumn(...)0%2100%
GetUlongColumn(...)0%2100%
GetFloatColumn(...)0%2100%
GetDoubleColumn(...)0%2100%
GetVector2Column(...)0%2100%
GetVector3Column(...)0%2100%
GetVector4Column(...)0%2100%
GetVector2IntColumn(...)0%2100%
GetVector3IntColumn(...)0%2100%
GetQuaternionColumn(...)0%2100%
GetRectColumn(...)0%2100%
GetRectIntColumn(...)0%2100%
GetColorColumn(...)0%2100%
GetLayerMaskColumn(...)0%2100%
GetBoundsColumn(...)0%2100%
GetBoundsIntColumn(...)0%2100%
GetHash128Column(...)0%2100%
GetGradientColumn(...)0%2100%
GetAnimationCurveColumn(...)0%2100%
GetObjectColumn(...)0%2100%
AddColumnInternal[T](...)0%3061700%
RemoveColumnInternal[T](...)0%6200%
InsertRowsOfTypeInternal[T](...)0%42600%
DeleteRowsOfTypeInternal[T](...)0%30500%
GetCellRef[T](...)0%2100%
GetCell[T](...)0%2100%
SetCell[T](...)0%2100%
GetColumn[T](...)0%2100%

File(s)

D:/BuildAgent/work/GDX-Documentation/Projects/GDX_Development/Packages/com.dotbunny.gdx/GDX/Tables/StableTable.cs

#LineLine coverage
 1// Copyright (c) 2020-2023 dotBunny Inc.
 2// dotBunny licenses this file to you under the BSL-1.0 license.
 3// See the LICENSE file in the project root for more information.
 4
 5using System;
 6using GDX.Collections;
 7using UnityEngine;
 8
 9namespace GDX.Tables
 10{
 11
 12    [CreateAssetMenu(menuName = "GDX/Stable Table", fileName = "GDXStableTable")]
 13    [Serializable]
 14    public class StableTable : ScriptableObject, ITable
 15    {
 16        [Serializable]
 17        internal struct ColumnEntry
 18        {
 19            public Serializable.SerializableTypes ColumnType;
 20            public int columnDenseIndex;
 21        }
 22
 23        [SerializeField] internal ArrayHolder<string>[] allStringColumns;
 24        [SerializeField] internal ArrayHolder<bool>[] allBoolColumns;
 25        [SerializeField] internal ArrayHolder<char>[] allCharColumns;
 26        [SerializeField] internal ArrayHolder<sbyte>[] allSbyteColumns;
 27        [SerializeField] internal ArrayHolder<byte>[] allByteColumns;
 28        [SerializeField] internal ArrayHolder<short>[] allShortColumns;
 29        [SerializeField] internal ArrayHolder<ushort>[] allUshortColumns;
 30        [SerializeField] internal ArrayHolder<int>[] allIntColumns;
 31        [SerializeField] internal ArrayHolder<uint>[] allUintColumns;
 32        [SerializeField] internal ArrayHolder<long>[] allLongColumns;
 33        [SerializeField] internal ArrayHolder<ulong>[] allUlongColumns;
 34        [SerializeField] internal ArrayHolder<float>[] allFloatColumns;
 35        [SerializeField] internal ArrayHolder<double>[] allDoubleColumns;
 36        [SerializeField] internal ArrayHolder<Vector2>[] allVector2Columns;
 37        [SerializeField] internal ArrayHolder<Vector3>[] allVector3Columns;
 38        [SerializeField] internal ArrayHolder<Vector4>[] allVector4Columns;
 39        [SerializeField] internal ArrayHolder<Vector2Int>[] allVector2IntColumns;
 40        [SerializeField] internal ArrayHolder<Vector3Int>[] allVector3IntColumns;
 41        [SerializeField] internal ArrayHolder<Quaternion>[] allQuaternionColumns;
 42        [SerializeField] internal ArrayHolder<Rect>[] allRectColumns;
 43        [SerializeField] internal ArrayHolder<RectInt>[] allRectIntColumns;
 44        [SerializeField] internal ArrayHolder<Color>[] allColorColumns;
 45        [SerializeField] internal ArrayHolder<LayerMask>[] allLayerMaskColumns;
 46        [SerializeField] internal ArrayHolder<Bounds>[] allBoundsColumns;
 47        [SerializeField] internal ArrayHolder<BoundsInt>[] allBoundsIntColumns;
 48        [SerializeField] internal ArrayHolder<Hash128>[] allHash128Columns;
 49        [SerializeField] internal ArrayHolder<Gradient>[] allGradientColumns;
 50        [SerializeField] internal ArrayHolder<AnimationCurve>[] allAnimationCurveColumns;
 51        [SerializeField] internal ArrayHolder<UnityEngine.Object>[] allObjectRefColumns;
 052        [SerializeField] internal ArrayHolder<string>[] allColumnNames = new ArrayHolder<string>[Serializable.Serializab
 53
 54        [SerializeField] internal int[] rowIDToDenseIndexMap;
 55        [SerializeField] internal int[] rowDenseIndexToIDMap;
 56        [SerializeField] internal string[] rowNames;
 57        [SerializeField] internal int rowEntriesFreeListHead;
 58
 59        [SerializeField]
 60        internal int rowCount;
 61
 62        [SerializeField] internal ColumnEntry[] columnIDToDenseIndexMap;
 63        [SerializeField] internal int[] columnIDToSortOrderMap;
 64        [SerializeField] internal int[] sortedOrderToColumnIDMap;
 65
 66        // TODO move with other block
 067        [SerializeField] ArrayHolder<int>[] columnDenseIndexToIDMap = new ArrayHolder<int>[Serializable.SerializableType
 68
 69        [SerializeField]
 70        internal int columnEntriesFreeListHead;
 71
 72        [SerializeField]
 73        internal int combinedColumnCount;
 74
 75        [SerializeField]
 076        internal ulong dataVersion = 1;
 77
 78
 79        public ulong GetDataVersion()
 080        {
 081            return dataVersion;
 082        }
 83
 84        /// <inheritdoc />
 85        public int GetColumnCount()
 086        {
 087            return combinedColumnCount;
 088        }
 89
 90        /// <inheritdoc />
 91        public int GetRowCount()
 092        {
 093            return rowCount;
 094        }
 95
 96        public ITable.RowDescription[] GetAllRowDescriptions()
 097        {
 098            if (combinedColumnCount == 0 || rowCount == 0) return null;
 099            ITable.RowDescription[] returnArray = new ITable.RowDescription[rowCount];
 0100            string empty = string.Empty;
 0101            for (int i = 0; i < rowCount; i++)
 0102            {
 0103                returnArray[i].Index = rowDenseIndexToIDMap[i];
 0104                returnArray[i].Name = empty;
 0105            }
 106
 0107            return returnArray;
 0108        }
 109        public ITable.RowDescription GetRowDescription(string name)
 0110        {
 0111            for (int i = 0; i < rowCount; i++)
 0112            {
 0113                string nameAt = rowNames[i];
 114
 0115                if (nameAt == name)
 0116                {
 0117                    return new ITable.RowDescription
 118                    {
 119                        Index = rowDenseIndexToIDMap[i],
 120                        Name = nameAt
 121                    };
 122                }
 0123            }
 124
 0125            throw new ArgumentException("Row with name " + name + " does not exist in the table");
 0126        }
 127
 128        public ITable.RowDescription GetRowDescription(int order)
 0129        {
 0130            return new ITable.RowDescription
 131            {
 132                Index = rowDenseIndexToIDMap[order],
 133                Name = rowNames[order]
 134            };
 0135        }
 136
 137        public ITable.ColumnDescription GetColumnDescription(string name)
 0138        {
 0139            for (int i = 0; i < Serializable.SerializableTypesCount; i++)
 0140            {
 0141                string[] columnNames = allColumnNames[i].TArray;
 142
 0143                if (columnNames != null)
 0144                {
 0145                    for (int j = 0; j < columnNames.Length; j++)
 0146                    {
 0147                        string nameAt = columnNames[j];
 148
 0149                        if (name == nameAt)
 0150                        {
 0151                            int columnID = columnDenseIndexToIDMap[i].TArray[j];
 152
 0153                            ref ColumnEntry columnEntry = ref columnIDToDenseIndexMap[columnID];
 0154                            return new ITable.ColumnDescription
 155                            {
 156                                Index = columnID,
 157                                Name = nameAt,
 158                                Type = columnEntry.ColumnType
 159                            };
 160                        }
 0161                    }
 0162                }
 0163            }
 164
 0165            throw new ArgumentException("Column with name " + name + " does not exist in the table");
 0166        }
 167
 168        public ITable.ColumnDescription GetColumnDescription(int order)
 0169        {
 0170            int idAtOrderedIndex = sortedOrderToColumnIDMap[order];
 0171            ref ColumnEntry columnEntry = ref columnIDToDenseIndexMap[idAtOrderedIndex];
 172
 0173            string columnName = allColumnNames[(int)columnEntry.ColumnType][columnEntry.columnDenseIndex];
 174
 0175            return new ITable.ColumnDescription
 176            {
 177                Index = idAtOrderedIndex,
 178                Name = columnName,
 179                Type = columnEntry.ColumnType
 180            };
 0181        }
 182
 183        /// <inheritdoc />
 184        public ITable.ColumnDescription[] GetAllColumnDescriptions()
 0185        {
 0186            if (combinedColumnCount == 0) return null;
 0187            ITable.ColumnDescription[] returnArray = new ITable.ColumnDescription[combinedColumnCount];
 188
 0189            for (int i = 0; i < combinedColumnCount; i++)
 0190            {
 0191                int columnID = sortedOrderToColumnIDMap[i];
 0192                Serializable.SerializableTypes columnType = columnIDToDenseIndexMap[columnID].ColumnType;
 0193                string name = allColumnNames[(int)columnType][columnIDToDenseIndexMap[columnID].columnDenseIndex];
 194
 0195                returnArray[i] = new ITable.ColumnDescription
 196                {
 197                    Name = name,
 198                    Index = columnID,
 199                    Type = columnType
 200                };
 0201            }
 202
 0203            return returnArray;
 0204        }
 205
 206        public void SetColumnName(string name, int columnID)
 0207        {
 0208            ref ColumnEntry columnEntry = ref columnIDToDenseIndexMap[columnID];
 0209            allColumnNames[(int)columnEntry.ColumnType][columnEntry.columnDenseIndex] = name;
 0210        }
 211
 212        public string GetColumnName(int columnID)
 0213        {
 0214            ref ColumnEntry columnEntry = ref columnIDToDenseIndexMap[columnID];
 0215            return allColumnNames[(int)columnEntry.ColumnType][columnEntry.columnDenseIndex];
 0216        }
 217
 218        public ref string GetColumnNameRef(int columnID)
 0219        {
 0220            ref ColumnEntry columnEntry = ref columnIDToDenseIndexMap[columnID];
 0221            return ref allColumnNames[(int)columnEntry.ColumnType][columnEntry.columnDenseIndex];
 0222        }
 223
 224
 225        public int AddRow(string rowName = null, int insertAtRowID = -1)
 0226        {
 0227            int rowID = rowEntriesFreeListHead;
 0228            int rowIDToDenseIndexMapLength = rowIDToDenseIndexMap?.Length ?? 0;
 0229            if (rowID >= rowIDToDenseIndexMapLength)
 0230            {
 0231                int newSize = rowID * 2;
 0232                newSize = newSize == 0 ? 1 : newSize;
 0233                Array.Resize(ref rowIDToDenseIndexMap, newSize);
 0234                for (int i = rowID; i < newSize; i++)
 0235                {
 0236                    rowIDToDenseIndexMap[i] = i + 1;
 0237                }
 0238            }
 239
 0240            int denseIndexToIDMapLength = rowDenseIndexToIDMap?.Length ?? 0;
 0241            Array.Resize(ref rowDenseIndexToIDMap, denseIndexToIDMapLength + 1);
 0242            Array.Resize(ref rowNames, denseIndexToIDMapLength + 1);
 243
 0244            int insertAt = insertAtRowID < 0 ? rowCount : rowIDToDenseIndexMap[insertAtRowID];
 245
 0246            for (int i = denseIndexToIDMapLength; i > insertAt; i--)
 0247            {
 0248                int currentRowID = rowDenseIndexToIDMap[i - 1];
 0249                rowDenseIndexToIDMap[i] = currentRowID;
 250
 0251                rowIDToDenseIndexMap[currentRowID] = i;
 252
 0253                rowNames[i] = rowNames[i - 1];
 0254            }
 255
 0256            rowEntriesFreeListHead = rowIDToDenseIndexMap[rowID];
 0257            rowIDToDenseIndexMap[rowID] = insertAt;
 0258            rowDenseIndexToIDMap[insertAt] = rowID;
 0259            rowNames[insertAt] = rowName == null ? string.Empty : rowName;
 260
 0261            InsertRowsOfTypeInternal(ref allStringColumns, insertAt, 1);
 0262            InsertRowsOfTypeInternal(ref allBoolColumns, insertAt, 1);
 0263            InsertRowsOfTypeInternal(ref allCharColumns, insertAt, 1);
 0264            InsertRowsOfTypeInternal(ref allSbyteColumns, insertAt, 1);
 0265            InsertRowsOfTypeInternal(ref allByteColumns, insertAt, 1);
 0266            InsertRowsOfTypeInternal(ref allShortColumns, insertAt, 1);
 0267            InsertRowsOfTypeInternal(ref allUshortColumns, insertAt, 1);
 0268            InsertRowsOfTypeInternal(ref allIntColumns, insertAt, 1);
 0269            InsertRowsOfTypeInternal(ref allUintColumns, insertAt, 1);
 0270            InsertRowsOfTypeInternal(ref allLongColumns, insertAt, 1);
 0271            InsertRowsOfTypeInternal(ref allUlongColumns, insertAt, 1);
 0272            InsertRowsOfTypeInternal(ref allFloatColumns, insertAt, 1);
 0273            InsertRowsOfTypeInternal(ref allDoubleColumns, insertAt, 1);
 0274            InsertRowsOfTypeInternal(ref allVector2Columns, insertAt, 1);
 0275            InsertRowsOfTypeInternal(ref allVector3Columns, insertAt, 1);
 0276            InsertRowsOfTypeInternal(ref allVector4Columns, insertAt, 1);
 0277            InsertRowsOfTypeInternal(ref allVector2IntColumns, insertAt, 1);
 0278            InsertRowsOfTypeInternal(ref allVector3IntColumns, insertAt, 1);
 0279            InsertRowsOfTypeInternal(ref allQuaternionColumns, insertAt, 1);
 0280            InsertRowsOfTypeInternal(ref allRectColumns, insertAt, 1);
 0281            InsertRowsOfTypeInternal(ref allRectIntColumns, insertAt, 1);
 0282            InsertRowsOfTypeInternal(ref allColorColumns, insertAt, 1);
 0283            InsertRowsOfTypeInternal(ref allLayerMaskColumns, insertAt, 1);
 0284            InsertRowsOfTypeInternal(ref allBoundsColumns, insertAt, 1);
 0285            InsertRowsOfTypeInternal(ref allBoundsIntColumns, insertAt, 1);
 0286            InsertRowsOfTypeInternal(ref allHash128Columns, insertAt, 1);
 0287            InsertRowsOfTypeInternal(ref allGradientColumns, insertAt, 1);
 0288            InsertRowsOfTypeInternal(ref allAnimationCurveColumns, insertAt, 1);
 0289            InsertRowsOfTypeInternal(ref allObjectRefColumns, insertAt, 1);
 290
 0291            ++rowCount;
 0292            dataVersion++;
 293
 0294            return rowID;
 0295        }
 296
 297        public void AddRows(int numberOfNewRows, string[] rowNames = null, int insertAtRowID = -1)
 0298        {
 0299            int rowIDToDenseIndexMapLength = rowIDToDenseIndexMap?.Length ?? 0;
 0300            int newCount = rowCount + numberOfNewRows;
 0301            if (newCount > rowIDToDenseIndexMapLength)
 0302            {
 0303                int newSize = newCount;
 0304                --newSize;
 0305                newSize |= newSize >> 1;
 0306                newSize |= newSize >> 2;
 0307                newSize |= newSize >> 4;
 0308                newSize |= newSize >> 8;
 0309                newSize |= newSize >> 16;
 0310                ++newSize;
 311
 0312                newSize = newSize == 0 ? 1 : newSize;
 0313                Array.Resize(ref rowIDToDenseIndexMap, newSize);
 0314                for (int i = rowIDToDenseIndexMapLength; i < newSize; i++)
 0315                {
 0316                    rowIDToDenseIndexMap[i] = i + 1;
 0317                }
 0318            }
 319
 0320            int denseIndexToIDMapLength = rowDenseIndexToIDMap?.Length ?? 0;
 0321            Array.Resize(ref rowDenseIndexToIDMap, denseIndexToIDMapLength + numberOfNewRows);
 0322            Array.Resize(ref rowNames, denseIndexToIDMapLength + numberOfNewRows);
 323
 0324            int insertAt = insertAtRowID < 0 ? rowCount : rowIDToDenseIndexMap[insertAtRowID];
 325
 0326            for (int i = denseIndexToIDMapLength; i > insertAt + numberOfNewRows - 1; i--)
 0327            {
 0328                int currentRowID = rowDenseIndexToIDMap[i - numberOfNewRows];
 0329                rowDenseIndexToIDMap[i] = currentRowID;
 330
 0331                rowIDToDenseIndexMap[currentRowID] = i;
 332
 0333                rowNames[i] = rowNames[i - numberOfNewRows];
 0334            }
 335
 0336            int freeListHead = rowEntriesFreeListHead;
 337
 0338            for (int i = 0; i < numberOfNewRows; i++)
 0339            {
 0340                int rowID = freeListHead;
 0341                freeListHead = rowIDToDenseIndexMap[rowID];
 0342                rowIDToDenseIndexMap[rowID] = insertAt + i;
 0343                rowDenseIndexToIDMap[insertAt + i] = rowID;
 0344            }
 345
 0346            int numberOfNewRowNames = rowNames?.Length ?? 0;
 0347            string emptyString = string.Empty;
 0348            for (int i = 0; i < numberOfNewRowNames; i++)
 0349            {
 0350                string currentRowName = rowNames[i];
 0351                rowNames[insertAt + i] = currentRowName == null ? emptyString : currentRowName;
 0352            }
 353
 0354            for (int i = numberOfNewRowNames; i < numberOfNewRows; i++)
 0355            {
 0356                rowNames[insertAt + i] = string.Empty;
 0357            }
 358
 0359            rowEntriesFreeListHead = freeListHead;
 360
 0361            InsertRowsOfTypeInternal(ref allStringColumns, insertAt, numberOfNewRows);
 0362            InsertRowsOfTypeInternal(ref allBoolColumns, insertAt, numberOfNewRows);
 0363            InsertRowsOfTypeInternal(ref allCharColumns, insertAt, numberOfNewRows);
 0364            InsertRowsOfTypeInternal(ref allSbyteColumns, insertAt, numberOfNewRows);
 0365            InsertRowsOfTypeInternal(ref allByteColumns, insertAt, numberOfNewRows);
 0366            InsertRowsOfTypeInternal(ref allShortColumns, insertAt, numberOfNewRows);
 0367            InsertRowsOfTypeInternal(ref allUshortColumns, insertAt, numberOfNewRows);
 0368            InsertRowsOfTypeInternal(ref allIntColumns, insertAt, numberOfNewRows);
 0369            InsertRowsOfTypeInternal(ref allUintColumns, insertAt, numberOfNewRows);
 0370            InsertRowsOfTypeInternal(ref allLongColumns, insertAt, numberOfNewRows);
 0371            InsertRowsOfTypeInternal(ref allUlongColumns, insertAt, numberOfNewRows);
 0372            InsertRowsOfTypeInternal(ref allFloatColumns, insertAt, numberOfNewRows);
 0373            InsertRowsOfTypeInternal(ref allDoubleColumns, insertAt, numberOfNewRows);
 0374            InsertRowsOfTypeInternal(ref allVector2Columns, insertAt, numberOfNewRows);
 0375            InsertRowsOfTypeInternal(ref allVector3Columns, insertAt, numberOfNewRows);
 0376            InsertRowsOfTypeInternal(ref allVector4Columns, insertAt, numberOfNewRows);
 0377            InsertRowsOfTypeInternal(ref allVector2IntColumns, insertAt, numberOfNewRows);
 0378            InsertRowsOfTypeInternal(ref allVector3IntColumns, insertAt, numberOfNewRows);
 0379            InsertRowsOfTypeInternal(ref allQuaternionColumns, insertAt, numberOfNewRows);
 0380            InsertRowsOfTypeInternal(ref allRectColumns, insertAt, numberOfNewRows);
 0381            InsertRowsOfTypeInternal(ref allRectIntColumns, insertAt, numberOfNewRows);
 0382            InsertRowsOfTypeInternal(ref allColorColumns, insertAt, numberOfNewRows);
 0383            InsertRowsOfTypeInternal(ref allLayerMaskColumns, insertAt, numberOfNewRows);
 0384            InsertRowsOfTypeInternal(ref allBoundsColumns, insertAt, numberOfNewRows);
 0385            InsertRowsOfTypeInternal(ref allBoundsIntColumns, insertAt, numberOfNewRows);
 0386            InsertRowsOfTypeInternal(ref allHash128Columns, insertAt, numberOfNewRows);
 0387            InsertRowsOfTypeInternal(ref allGradientColumns, insertAt, numberOfNewRows);
 0388            InsertRowsOfTypeInternal(ref allAnimationCurveColumns, insertAt, numberOfNewRows);
 0389            InsertRowsOfTypeInternal(ref allObjectRefColumns, insertAt, numberOfNewRows);
 390
 0391            rowCount += numberOfNewRows;
 0392            dataVersion++;
 0393        }
 394
 395        public void AddRows(int numberOfNewRows, ref int[] rowIDs, string[] rowNames = null, int insertAtRowID = -1)
 0396        {
 0397            int rowIDToDenseIndexMapLength = rowIDToDenseIndexMap?.Length ?? 0;
 0398            int newCount = rowCount + numberOfNewRows;
 0399            if (newCount > rowIDToDenseIndexMapLength)
 0400            {
 0401                int newSize = newCount;
 0402                --newSize;
 0403                newSize |= newSize >> 1;
 0404                newSize |= newSize >> 2;
 0405                newSize |= newSize >> 4;
 0406                newSize |= newSize >> 8;
 0407                newSize |= newSize >> 16;
 0408                ++newSize;
 409
 0410                newSize = newSize == 0 ? 1 : newSize;
 0411                Array.Resize(ref rowIDToDenseIndexMap, newSize);
 0412                for (int i = rowIDToDenseIndexMapLength; i < newSize; i++)
 0413                {
 0414                    rowIDToDenseIndexMap[i] = i + 1;
 0415                }
 0416            }
 417
 0418            int denseIndexToIDMapLength = rowDenseIndexToIDMap?.Length ?? 0;
 0419            Array.Resize(ref rowDenseIndexToIDMap, denseIndexToIDMapLength + numberOfNewRows);
 420
 0421            int insertAt = insertAtRowID < 0 ? rowCount : rowIDToDenseIndexMap[insertAtRowID];
 422
 0423            for (int i = denseIndexToIDMapLength; i > insertAt + numberOfNewRows - 1; i--)
 0424            {
 0425                int currentRowID = rowDenseIndexToIDMap[i - numberOfNewRows];
 0426                rowDenseIndexToIDMap[i] = currentRowID;
 427
 0428                rowIDToDenseIndexMap[currentRowID] = i;
 429
 0430                rowNames[i] = rowNames[i - numberOfNewRows];
 0431            }
 432
 0433            int freeListHead = rowEntriesFreeListHead;
 434
 0435            for (int i = 0; i < numberOfNewRows; i++)
 0436            {
 0437                int rowID = freeListHead;
 0438                freeListHead = rowIDToDenseIndexMap[rowID];
 0439                rowIDToDenseIndexMap[rowID] = insertAt + i;
 0440                rowDenseIndexToIDMap[insertAt + i] = rowID;
 0441                rowIDs[i] = rowID;
 0442            }
 443
 0444            int numberOfNewRowNames = rowNames?.Length ?? 0;
 0445            string emptyString = string.Empty;
 0446            for (int i = 0; i < numberOfNewRowNames; i++)
 0447            {
 0448                string currentRowName = rowNames[i];
 0449                rowNames[insertAt + i] = currentRowName == null ? emptyString : currentRowName;
 0450            }
 451
 0452            for (int i = numberOfNewRowNames; i < numberOfNewRows; i++)
 0453            {
 0454                rowNames[insertAt + i] = string.Empty;
 0455            }
 456
 0457            rowEntriesFreeListHead = freeListHead;
 458
 0459            InsertRowsOfTypeInternal(ref allStringColumns, insertAt, numberOfNewRows);
 0460            InsertRowsOfTypeInternal(ref allBoolColumns, insertAt, numberOfNewRows);
 0461            InsertRowsOfTypeInternal(ref allCharColumns, insertAt, numberOfNewRows);
 0462            InsertRowsOfTypeInternal(ref allSbyteColumns, insertAt, numberOfNewRows);
 0463            InsertRowsOfTypeInternal(ref allByteColumns, insertAt, numberOfNewRows);
 0464            InsertRowsOfTypeInternal(ref allShortColumns, insertAt, numberOfNewRows);
 0465            InsertRowsOfTypeInternal(ref allUshortColumns, insertAt, numberOfNewRows);
 0466            InsertRowsOfTypeInternal(ref allIntColumns, insertAt, numberOfNewRows);
 0467            InsertRowsOfTypeInternal(ref allUintColumns, insertAt, numberOfNewRows);
 0468            InsertRowsOfTypeInternal(ref allLongColumns, insertAt, numberOfNewRows);
 0469            InsertRowsOfTypeInternal(ref allUlongColumns, insertAt, numberOfNewRows);
 0470            InsertRowsOfTypeInternal(ref allFloatColumns, insertAt, numberOfNewRows);
 0471            InsertRowsOfTypeInternal(ref allDoubleColumns, insertAt, numberOfNewRows);
 0472            InsertRowsOfTypeInternal(ref allVector2Columns, insertAt, numberOfNewRows);
 0473            InsertRowsOfTypeInternal(ref allVector3Columns, insertAt, numberOfNewRows);
 0474            InsertRowsOfTypeInternal(ref allVector4Columns, insertAt, numberOfNewRows);
 0475            InsertRowsOfTypeInternal(ref allVector2IntColumns, insertAt, numberOfNewRows);
 0476            InsertRowsOfTypeInternal(ref allVector3IntColumns, insertAt, numberOfNewRows);
 0477            InsertRowsOfTypeInternal(ref allQuaternionColumns, insertAt, numberOfNewRows);
 0478            InsertRowsOfTypeInternal(ref allRectColumns, insertAt, numberOfNewRows);
 0479            InsertRowsOfTypeInternal(ref allRectIntColumns, insertAt, numberOfNewRows);
 0480            InsertRowsOfTypeInternal(ref allColorColumns, insertAt, numberOfNewRows);
 0481            InsertRowsOfTypeInternal(ref allLayerMaskColumns, insertAt, numberOfNewRows);
 0482            InsertRowsOfTypeInternal(ref allBoundsColumns, insertAt, numberOfNewRows);
 0483            InsertRowsOfTypeInternal(ref allBoundsIntColumns, insertAt, numberOfNewRows);
 0484            InsertRowsOfTypeInternal(ref allHash128Columns, insertAt, numberOfNewRows);
 0485            InsertRowsOfTypeInternal(ref allGradientColumns, insertAt, numberOfNewRows);
 0486            InsertRowsOfTypeInternal(ref allAnimationCurveColumns, insertAt, numberOfNewRows);
 0487            InsertRowsOfTypeInternal(ref allObjectRefColumns, insertAt, numberOfNewRows);
 488
 0489            rowCount += numberOfNewRows;
 0490            dataVersion++;
 0491        }
 492
 493        public void RemoveRow(int rowID)
 0494        {
 0495            int rowDenseIndex = rowIDToDenseIndexMap[rowID];
 0496            for (int i = rowDenseIndex + 1; i < rowCount; i++)
 0497            {
 0498                int currentRowID = rowDenseIndexToIDMap[i];
 0499                rowIDToDenseIndexMap[currentRowID] = i - 1;
 0500                rowDenseIndexToIDMap[i - 1] = currentRowID;
 0501                rowNames[i - 1] = rowNames[i];
 0502            }
 503
 0504            rowIDToDenseIndexMap[rowID] = rowEntriesFreeListHead;
 0505            rowEntriesFreeListHead = rowID;
 0506            Array.Resize(ref rowDenseIndexToIDMap, rowCount - 1);
 0507            Array.Resize(ref rowNames, rowCount - 1);
 508
 0509            DeleteRowsOfTypeInternal(ref allStringColumns, rowID, 1);
 0510            DeleteRowsOfTypeInternal(ref allBoolColumns, rowID, 1);
 0511            DeleteRowsOfTypeInternal(ref allCharColumns, rowID, 1);
 0512            DeleteRowsOfTypeInternal(ref allSbyteColumns, rowID, 1);
 0513            DeleteRowsOfTypeInternal(ref allByteColumns, rowID, 1);
 0514            DeleteRowsOfTypeInternal(ref allShortColumns, rowID, 1);
 0515            DeleteRowsOfTypeInternal(ref allUshortColumns, rowID, 1);
 0516            DeleteRowsOfTypeInternal(ref allIntColumns, rowID, 1);
 0517            DeleteRowsOfTypeInternal(ref allUintColumns, rowID, 1);
 0518            DeleteRowsOfTypeInternal(ref allLongColumns, rowID, 1);
 0519            DeleteRowsOfTypeInternal(ref allUlongColumns, rowID, 1);
 0520            DeleteRowsOfTypeInternal(ref allFloatColumns, rowID, 1);
 0521            DeleteRowsOfTypeInternal(ref allDoubleColumns, rowID, 1);
 0522            DeleteRowsOfTypeInternal(ref allVector2Columns, rowID, 1);
 0523            DeleteRowsOfTypeInternal(ref allVector3Columns, rowID, 1);
 0524            DeleteRowsOfTypeInternal(ref allVector4Columns, rowID, 1);
 0525            DeleteRowsOfTypeInternal(ref allVector2IntColumns, rowID, 1);
 0526            DeleteRowsOfTypeInternal(ref allVector3IntColumns, rowID, 1);
 0527            DeleteRowsOfTypeInternal(ref allQuaternionColumns, rowID, 1);
 0528            DeleteRowsOfTypeInternal(ref allRectColumns, rowID, 1);
 0529            DeleteRowsOfTypeInternal(ref allRectIntColumns, rowID, 1);
 0530            DeleteRowsOfTypeInternal(ref allColorColumns, rowID, 1);
 0531            DeleteRowsOfTypeInternal(ref allLayerMaskColumns, rowID, 1);
 0532            DeleteRowsOfTypeInternal(ref allBoundsColumns, rowID, 1);
 0533            DeleteRowsOfTypeInternal(ref allBoundsIntColumns, rowID, 1);
 0534            DeleteRowsOfTypeInternal(ref allHash128Columns, rowID, 1);
 0535            DeleteRowsOfTypeInternal(ref allGradientColumns, rowID, 1);
 0536            DeleteRowsOfTypeInternal(ref allAnimationCurveColumns, rowID, 1);
 0537            DeleteRowsOfTypeInternal(ref allObjectRefColumns, rowID, 1);
 538
 0539            --rowCount;
 0540            dataVersion++;
 0541        }
 542
 543        public int AddColumn(Serializable.SerializableTypes columnType, string columnName, int insertAtColumnID = -1)
 0544        {
 0545            switch (columnType)
 546            {
 547                case Serializable.SerializableTypes.String:
 0548                    return AddColumnInternal(columnName, ref allStringColumns, Serializable.SerializableTypes.String, in
 549                case Serializable.SerializableTypes.Char:
 0550                    return AddColumnInternal(columnName, ref allCharColumns, Serializable.SerializableTypes.Char, insert
 551                case Serializable.SerializableTypes.Bool:
 0552                    return AddColumnInternal(columnName, ref allBoolColumns, Serializable.SerializableTypes.Bool, insert
 553                case Serializable.SerializableTypes.SByte:
 0554                    return AddColumnInternal(columnName, ref allSbyteColumns, Serializable.SerializableTypes.SByte, inse
 555                case Serializable.SerializableTypes.Byte:
 0556                    return AddColumnInternal(columnName, ref allByteColumns, Serializable.SerializableTypes.Byte, insert
 557                case Serializable.SerializableTypes.Short:
 0558                    return AddColumnInternal(columnName, ref allShortColumns, Serializable.SerializableTypes.Short, inse
 559                case Serializable.SerializableTypes.UShort:
 0560                    return AddColumnInternal(columnName, ref allUshortColumns, Serializable.SerializableTypes.UShort, in
 561                case Serializable.SerializableTypes.Int:
 0562                    return AddColumnInternal(columnName, ref allIntColumns, Serializable.SerializableTypes.Int, insertAt
 563                case Serializable.SerializableTypes.UInt:
 0564                    return AddColumnInternal(columnName, ref allUintColumns, Serializable.SerializableTypes.UInt, insert
 565                case Serializable.SerializableTypes.Long:
 0566                    return AddColumnInternal(columnName, ref allLongColumns, Serializable.SerializableTypes.Long, insert
 567                case Serializable.SerializableTypes.ULong:
 0568                    return AddColumnInternal(columnName, ref allUlongColumns, Serializable.SerializableTypes.ULong, inse
 569                case Serializable.SerializableTypes.Float:
 0570                    return AddColumnInternal(columnName, ref allFloatColumns, Serializable.SerializableTypes.Float, inse
 571                case Serializable.SerializableTypes.Double:
 0572                    return AddColumnInternal(columnName, ref allDoubleColumns, Serializable.SerializableTypes.Double, in
 573                case Serializable.SerializableTypes.Vector2:
 0574                    return AddColumnInternal(columnName, ref allVector2Columns, Serializable.SerializableTypes.Vector2, 
 575                case Serializable.SerializableTypes.Vector3:
 0576                    return AddColumnInternal(columnName, ref allVector3Columns, Serializable.SerializableTypes.Vector3, 
 577                case Serializable.SerializableTypes.Vector4:
 0578                    return AddColumnInternal(columnName, ref allVector4Columns, Serializable.SerializableTypes.Vector4, 
 579                case Serializable.SerializableTypes.Vector2Int:
 0580                    return AddColumnInternal(columnName, ref allVector2IntColumns, Serializable.SerializableTypes.Vector
 581                case Serializable.SerializableTypes.Vector3Int:
 0582                    return AddColumnInternal(columnName, ref allVector3IntColumns, Serializable.SerializableTypes.Vector
 583                case Serializable.SerializableTypes.Quaternion:
 0584                    return AddColumnInternal(columnName, ref allQuaternionColumns, Serializable.SerializableTypes.Quater
 585                case Serializable.SerializableTypes.Rect:
 0586                    return AddColumnInternal(columnName, ref allRectColumns, Serializable.SerializableTypes.Rect, insert
 587                case Serializable.SerializableTypes.RectInt:
 0588                    return AddColumnInternal(columnName, ref allRectIntColumns, Serializable.SerializableTypes.RectInt, 
 589                case Serializable.SerializableTypes.Color:
 0590                    return AddColumnInternal(columnName, ref allColorColumns, Serializable.SerializableTypes.Color, inse
 591                case Serializable.SerializableTypes.LayerMask:
 0592                    return AddColumnInternal(columnName, ref allLayerMaskColumns, Serializable.SerializableTypes.LayerMa
 593                case Serializable.SerializableTypes.Bounds:
 0594                    return AddColumnInternal(columnName, ref allBoundsColumns, Serializable.SerializableTypes.Bounds, in
 595                case Serializable.SerializableTypes.BoundsInt:
 0596                    return AddColumnInternal(columnName, ref allBoundsIntColumns, Serializable.SerializableTypes.BoundsI
 597                case Serializable.SerializableTypes.Hash128:
 0598                    return AddColumnInternal(columnName, ref allHash128Columns, Serializable.SerializableTypes.Hash128, 
 599                case Serializable.SerializableTypes.Gradient:
 0600                    return AddColumnInternal(columnName, ref allGradientColumns, Serializable.SerializableTypes.Gradient
 601                case Serializable.SerializableTypes.AnimationCurve:
 0602                    return AddColumnInternal(columnName, ref allAnimationCurveColumns, Serializable.SerializableTypes.An
 603                case Serializable.SerializableTypes.Object:
 0604                    return AddColumnInternal(columnName, ref allObjectRefColumns, Serializable.SerializableTypes.Object,
 605            }
 0606            return -1;
 0607        }
 608
 609        public void RemoveColumn(Serializable.SerializableTypes columnType, int columnID)
 0610        {
 0611            switch (columnType)
 612            {
 613                case Serializable.SerializableTypes.String:
 0614                    RemoveColumnInternal(ref allStringColumns, Serializable.SerializableTypes.String, columnID);
 0615                    break;
 616                case Serializable.SerializableTypes.Char:
 0617                    RemoveColumnInternal(ref allCharColumns, Serializable.SerializableTypes.Char, columnID);
 0618                    break;
 619                case Serializable.SerializableTypes.Bool:
 0620                    RemoveColumnInternal(ref allBoolColumns, Serializable.SerializableTypes.Bool, columnID);
 0621                    break;
 622                case Serializable.SerializableTypes.SByte:
 0623                    RemoveColumnInternal(ref allSbyteColumns, Serializable.SerializableTypes.SByte, columnID);
 0624                    break;
 625                case Serializable.SerializableTypes.Byte:
 0626                    RemoveColumnInternal(ref allByteColumns, Serializable.SerializableTypes.Byte, columnID);
 0627                    break;
 628                case Serializable.SerializableTypes.Short:
 0629                    RemoveColumnInternal(ref allShortColumns, Serializable.SerializableTypes.Short, columnID);
 0630                    break;
 631                case Serializable.SerializableTypes.UShort:
 0632                    RemoveColumnInternal(ref allUshortColumns, Serializable.SerializableTypes.UShort, columnID);
 0633                    break;
 634                case Serializable.SerializableTypes.Int:
 0635                    RemoveColumnInternal(ref allIntColumns, Serializable.SerializableTypes.Int, columnID);
 0636                    break;
 637                case Serializable.SerializableTypes.UInt:
 0638                    RemoveColumnInternal(ref allUintColumns, Serializable.SerializableTypes.UInt, columnID);
 0639                    break;
 640                case Serializable.SerializableTypes.Long:
 0641                    RemoveColumnInternal(ref allLongColumns, Serializable.SerializableTypes.Long, columnID);
 0642                    break;
 643                case Serializable.SerializableTypes.ULong:
 0644                    RemoveColumnInternal(ref allUlongColumns, Serializable.SerializableTypes.ULong, columnID);
 0645                    break;
 646                case Serializable.SerializableTypes.Float:
 0647                    RemoveColumnInternal(ref allFloatColumns, Serializable.SerializableTypes.Float, columnID);
 0648                    break;
 649                case Serializable.SerializableTypes.Double:
 0650                    RemoveColumnInternal(ref allDoubleColumns, Serializable.SerializableTypes.Double, columnID);
 0651                    break;
 652                case Serializable.SerializableTypes.Vector2:
 0653                    RemoveColumnInternal(ref allVector2Columns, Serializable.SerializableTypes.Vector2, columnID);
 0654                    break;
 655                case Serializable.SerializableTypes.Vector3:
 0656                    RemoveColumnInternal(ref allVector3Columns, Serializable.SerializableTypes.Vector3, columnID);
 0657                    break;
 658                case Serializable.SerializableTypes.Vector4:
 0659                    RemoveColumnInternal(ref allVector4Columns, Serializable.SerializableTypes.Vector4, columnID);
 0660                    break;
 661                case Serializable.SerializableTypes.Vector2Int:
 0662                    RemoveColumnInternal(ref allVector2IntColumns, Serializable.SerializableTypes.Vector2Int, columnID);
 0663                    break;
 664                case Serializable.SerializableTypes.Vector3Int:
 0665                    RemoveColumnInternal(ref allVector3IntColumns, Serializable.SerializableTypes.Vector3Int, columnID);
 0666                    break;
 667                case Serializable.SerializableTypes.Quaternion:
 0668                    RemoveColumnInternal(ref allQuaternionColumns, Serializable.SerializableTypes.Quaternion, columnID);
 0669                    break;
 670                case Serializable.SerializableTypes.Rect:
 0671                    RemoveColumnInternal(ref allRectColumns, Serializable.SerializableTypes.Rect, columnID);
 0672                    break;
 673                case Serializable.SerializableTypes.RectInt:
 0674                    RemoveColumnInternal(ref allRectIntColumns, Serializable.SerializableTypes.RectInt, columnID);
 0675                    break;
 676                case Serializable.SerializableTypes.Color:
 0677                    RemoveColumnInternal(ref allColorColumns, Serializable.SerializableTypes.Color, columnID);
 0678                    break;
 679                case Serializable.SerializableTypes.LayerMask:
 0680                    RemoveColumnInternal(ref allLayerMaskColumns, Serializable.SerializableTypes.LayerMask, columnID);
 0681                    break;
 682                case Serializable.SerializableTypes.Bounds:
 0683                    RemoveColumnInternal(ref allBoundsColumns, Serializable.SerializableTypes.Bounds, columnID);
 0684                    break;
 685                case Serializable.SerializableTypes.BoundsInt:
 0686                    RemoveColumnInternal(ref allBoundsIntColumns, Serializable.SerializableTypes.BoundsInt, columnID);
 0687                    break;
 688                case Serializable.SerializableTypes.Hash128:
 0689                    RemoveColumnInternal(ref allHash128Columns, Serializable.SerializableTypes.Hash128, columnID);
 0690                    break;
 691                case Serializable.SerializableTypes.Gradient:
 0692                    RemoveColumnInternal(ref allGradientColumns, Serializable.SerializableTypes.Gradient, columnID);
 0693                    break;
 694                case Serializable.SerializableTypes.AnimationCurve:
 0695                    RemoveColumnInternal(ref allAnimationCurveColumns, Serializable.SerializableTypes.AnimationCurve, co
 0696                    break;
 697                case Serializable.SerializableTypes.Object:
 0698                    RemoveColumnInternal(ref allObjectRefColumns, Serializable.SerializableTypes.Object, columnID);
 0699                    break;
 700            }
 0701        }
 702
 703        // Set
 704
 705        public ulong SetString(int row, int column, string value)
 0706        {
 0707            return SetCell(row, column, ref allStringColumns, value);
 0708        }
 709
 710        public ulong SetBool(int row, int column, bool value)
 0711        {
 0712            return SetCell(row, column, ref allBoolColumns, value);
 0713        }
 714
 715        public ulong SetChar(int row, int column, char value)
 0716        {
 0717            return SetCell(row, column, ref allCharColumns, value);
 0718        }
 719
 720        public ulong SetSByte(int row, int column, sbyte value)
 0721        {
 0722            return SetCell(row, column, ref allSbyteColumns, value);
 0723        }
 724
 725        public ulong SetByte(int row, int column, byte value)
 0726        {
 0727            return SetCell(row, column, ref allByteColumns, value);
 0728        }
 729
 730        public ulong SetShort(int row, int column, short value)
 0731        {
 0732            return SetCell(row, column, ref allShortColumns, value);
 0733        }
 734
 735        public ulong SetUShort(int row, int column, ushort value)
 0736        {
 0737            return SetCell(row, column, ref allUshortColumns, value);
 0738        }
 739
 740        public ulong SetInt(int row, int column, int value)
 0741        {
 0742            return SetCell(row, column, ref allIntColumns, value);
 0743        }
 744
 745        public ulong SetUInt(int row, int column, uint value)
 0746        {
 0747            return SetCell(row, column, ref allUintColumns, value);
 0748        }
 749
 750        public ulong SetLong(int row, int column, long value)
 0751        {
 0752            return SetCell(row, column, ref allLongColumns, value);
 0753        }
 754
 755        public ulong SetULong(int row, int column, ulong value)
 0756        {
 0757            return SetCell(row, column, ref allUlongColumns, value);
 0758        }
 759
 760        public ulong SetFloat(int row, int column, float value)
 0761        {
 0762            return SetCell(row, column, ref allFloatColumns, value);
 0763        }
 764
 765        public ulong SetDouble(int row, int column, double value)
 0766        {
 0767            return SetCell(row, column, ref allDoubleColumns, value);
 0768        }
 769
 770        public ulong SetVector2(int row, int column, Vector2 value)
 0771        {
 0772            return SetCell(row, column, ref allVector2Columns, value);
 0773        }
 774
 775        public ulong SetVector3(int row, int column, Vector3 value)
 0776        {
 0777            return SetCell(row, column, ref allVector3Columns, value);
 0778        }
 779
 780        public ulong SetVector4(int row, int column, Vector4 value)
 0781        {
 0782            return SetCell(row, column, ref allVector4Columns, value);
 0783        }
 784
 785        public ulong SetVector2Int(int row, int column, Vector2Int value)
 0786        {
 0787            return SetCell(row, column, ref allVector2IntColumns, value);
 0788        }
 789
 790        public ulong SetVector3Int(int row, int column, Vector3Int value)
 0791        {
 0792            return SetCell(row, column, ref allVector3IntColumns, value);
 0793        }
 794
 795        public ulong SetQuaternion(int row, int column, Quaternion value)
 0796        {
 0797            return SetCell(row, column, ref allQuaternionColumns, value);
 0798        }
 799
 800        public ulong SetRect(int row, int column, Rect value)
 0801        {
 0802            return SetCell(row, column, ref allRectColumns, value);
 0803        }
 804
 805        public ulong SetRectInt(int row, int column, RectInt value)
 0806        {
 0807            return SetCell(row, column, ref allRectIntColumns, value);
 0808        }
 809
 810        public ulong SetColor(int row, int column, Color value)
 0811        {
 0812            return SetCell(row, column, ref allColorColumns, value);
 0813        }
 814
 815        public ulong SetLayerMask(int row, int column, LayerMask value)
 0816        {
 0817            return SetCell(row, column, ref allLayerMaskColumns, value);
 0818        }
 819
 820        public ulong SetBounds(int row, int column, Bounds value)
 0821        {
 0822            return SetCell(row, column, ref allBoundsColumns, value);
 0823        }
 824
 825        public ulong SetBoundsInt(int row, int column, BoundsInt value)
 0826        {
 0827            return SetCell(row, column, ref allBoundsIntColumns, value);
 0828        }
 829
 830        public ulong SetHash128(int row, int column, Hash128 value)
 0831        {
 0832            return SetCell(row, column, ref allHash128Columns, value);
 0833        }
 834
 835        public ulong SetGradient(int row, int column, Gradient value)
 0836        {
 0837            return SetCell(row, column, ref allGradientColumns, value);
 0838        }
 839
 840        public ulong SetAnimationCurve(int row, int column, AnimationCurve value)
 0841        {
 0842            return SetCell(row, column, ref allAnimationCurveColumns, value);
 0843        }
 844
 845        public ulong SetObject(int row, int column, UnityEngine.Object value)
 0846        {
 0847            return SetCell(row, column, ref allObjectRefColumns, value);
 0848        }
 849
 850        // Get
 851        public string GetString(int row, int column)
 0852        {
 0853            return GetCell(row, column, ref allStringColumns);
 0854        }
 855
 856        public bool GetBool(int row, int column)
 0857        {
 0858            return GetCell(row, column, ref allBoolColumns);
 0859        }
 860
 861        public char GetChar(int row, int column)
 0862        {
 0863            return GetCell(row, column, ref allCharColumns);
 0864        }
 865
 866        public sbyte GetSByte(int row, int column)
 0867        {
 0868            return GetCell(row, column, ref allSbyteColumns);
 0869        }
 870
 871        public byte GetByte(int row, int column)
 0872        {
 0873            return GetCell(row, column, ref allByteColumns);
 0874        }
 875
 876        public short GetShort(int row, int column)
 0877        {
 0878            return GetCell(row, column, ref allShortColumns);
 0879        }
 880
 881        public ushort GetUShort(int row, int column)
 0882        {
 0883            return GetCell(row, column, ref allUshortColumns);
 0884        }
 885
 886        public int GetInt(int row, int column)
 0887        {
 0888            return GetCell(row, column, ref allIntColumns);
 0889        }
 890
 891        public uint GetUInt(int row, int column)
 0892        {
 0893            return GetCell(row, column, ref allUintColumns);
 0894        }
 895
 896        public long GetLong(int row, int column)
 0897        {
 0898            return GetCell(row, column, ref allLongColumns);
 0899        }
 900
 901        public ulong GetULong(int row, int column)
 0902        {
 0903            return GetCell(row, column, ref allUlongColumns);
 0904        }
 905
 906        public float GetFloat(int row, int column)
 0907        {
 0908            return GetCell(row, column, ref allFloatColumns);
 0909        }
 910
 911        public double GetDouble(int row, int column)
 0912        {
 0913            return GetCell(row, column, ref allDoubleColumns);
 0914        }
 915
 916        public Vector2 GetVector2(int row, int column)
 0917        {
 0918            return GetCell(row, column, ref allVector2Columns);
 0919        }
 920
 921        public Vector3 GetVector3(int row, int column)
 0922        {
 0923            return GetCell(row, column, ref allVector3Columns);
 0924        }
 925
 926        public Vector4 GetVector4(int row, int column)
 0927        {
 0928            return GetCell(row, column, ref allVector4Columns);
 0929        }
 930
 931        public Vector2Int GetVector2Int(int row, int column)
 0932        {
 0933            return GetCell(row, column, ref allVector2IntColumns);
 0934        }
 935
 936        public Vector3Int GetVector3Int(int row, int column)
 0937        {
 0938            return GetCell(row, column, ref allVector3IntColumns);
 0939        }
 940
 941        public Quaternion GetQuaternion(int row, int column)
 0942        {
 0943            return GetCell(row, column, ref allQuaternionColumns);
 0944        }
 945
 946        public Rect GetRect(int row, int column)
 0947        {
 0948            return GetCell(row, column, ref allRectColumns);
 0949        }
 950
 951        public RectInt GetRectInt(int row, int column)
 0952        {
 0953            return GetCell(row, column, ref allRectIntColumns);
 0954        }
 955
 956        public Color GetColor(int row, int column)
 0957        {
 0958            return GetCell(row, column, ref allColorColumns);
 0959        }
 960
 961        public LayerMask GetLayerMask(int row, int column)
 0962        {
 0963            return GetCell(row, column, ref allLayerMaskColumns);
 0964        }
 965
 966        public Bounds GetBounds(int row, int column)
 0967        {
 0968            return GetCell(row, column, ref allBoundsColumns);
 0969        }
 970
 971        public BoundsInt GetBoundsInt(int row, int column)
 0972        {
 0973            return GetCell(row, column, ref allBoundsIntColumns);
 0974        }
 975
 976        public Hash128 GetHash128(int row, int column)
 0977        {
 0978            return GetCell(row, column, ref allHash128Columns);
 0979        }
 980
 981        public Gradient GetGradient(int row, int column)
 0982        {
 0983            return GetCell(row, column, ref allGradientColumns);
 0984        }
 985
 986        public AnimationCurve GetAnimationCurve(int row, int column)
 0987        {
 0988            return GetCell(row, column, ref allAnimationCurveColumns);
 0989        }
 990
 991        public UnityEngine.Object GetObject(int row, int column)
 0992        {
 0993            return GetCell(row, column, ref allObjectRefColumns);
 0994        }
 995
 996        // Get ref
 997
 998        public ref string GetStringRef(int row, int column)
 0999        {
 01000            return ref GetCellRef(row, column, ref allStringColumns);
 01001        }
 1002
 1003        public ref bool GetBoolRef(int row, int column)
 01004        {
 01005            return ref GetCellRef(row, column, ref allBoolColumns);
 01006        }
 1007
 1008        public ref char GetCharRef(int row, int column)
 01009        {
 01010            return ref GetCellRef(row, column, ref allCharColumns);
 01011        }
 1012
 1013        public ref sbyte GetSbyteRef(int row, int column)
 01014        {
 01015            return ref GetCellRef(row, column, ref allSbyteColumns);
 01016        }
 1017
 1018        public ref byte GetByteRef(int row, int columnID)
 01019        {
 01020            return ref GetCellRef(row, columnID, ref allByteColumns);
 01021        }
 1022
 1023        public ref short GetShortRef(int row, int column)
 01024        {
 01025            return ref GetCellRef(row, column, ref allShortColumns);
 01026        }
 1027
 1028        public ref ushort GetUshortRef(int row, int column)
 01029        {
 01030            return ref GetCellRef(row, column, ref allUshortColumns);
 01031        }
 1032
 1033        public ref int GetIntRef(int row, int column)
 01034        {
 01035            return ref GetCellRef(row, column, ref allIntColumns);
 01036        }
 1037
 1038        public ref uint GetUintRef(int row, int column)
 01039        {
 01040            return ref GetCellRef(row, column, ref allUintColumns);
 01041        }
 1042
 1043        public ref long GetLongRef(int row, int column)
 01044        {
 01045            return ref GetCellRef(row, column, ref allLongColumns);
 01046        }
 1047
 1048        public ref ulong GetUlongRef(int row, int column)
 01049        {
 01050            return ref GetCellRef(row, column, ref allUlongColumns);
 01051        }
 1052
 1053        public ref float GetFloatRef(int row, int column)
 01054        {
 01055            return ref GetCellRef(row, column, ref allFloatColumns);
 01056        }
 1057
 1058        public ref double GetDoubleRef(int row, int column)
 01059        {
 01060            return ref GetCellRef(row, column, ref allDoubleColumns);
 01061        }
 1062
 1063        public ref Vector2 GetVector2Ref(int row, int column)
 01064        {
 01065            return ref GetCellRef(row, column, ref allVector2Columns);
 01066        }
 1067
 1068        public ref Vector3 GetVector3Ref(int row, int column)
 01069        {
 01070            return ref GetCellRef(row, column, ref allVector3Columns);
 01071        }
 1072
 1073        public ref Vector4 GetVector4Ref(int row, int column)
 01074        {
 01075            return ref GetCellRef(row, column, ref allVector4Columns);
 01076        }
 1077
 1078        public ref Vector2Int GetVector2IntRef(int row, int column)
 01079        {
 01080            return ref GetCellRef(row, column, ref allVector2IntColumns);
 01081        }
 1082
 1083        public ref Vector3Int GetVector3IntRef(int row, int column)
 01084        {
 01085            return ref GetCellRef(row, column, ref allVector3IntColumns);
 01086        }
 1087
 1088        public ref Quaternion GetQuaternionRef(int row, int column)
 01089        {
 01090            return ref GetCellRef(row, column, ref allQuaternionColumns);
 01091        }
 1092
 1093        public ref Rect GetRectRef(int row, int column)
 01094        {
 01095            return ref GetCellRef(row, column, ref allRectColumns);
 01096        }
 1097
 1098        public ref RectInt GetRectIntRef(int row, int column)
 01099        {
 01100            return ref GetCellRef(row, column, ref allRectIntColumns);
 01101        }
 1102
 1103        public ref Color GetColorRef(int row, int column)
 01104        {
 01105            return ref GetCellRef(row, column, ref allColorColumns);
 01106        }
 1107
 1108        public ref LayerMask GetLayerMaskRef(int row, int column)
 01109        {
 01110            return ref GetCellRef(row, column, ref allLayerMaskColumns);
 01111        }
 1112
 1113        public ref Bounds GetBoundsRef(int row, int column)
 01114        {
 01115            return ref GetCellRef(row, column, ref allBoundsColumns);
 01116        }
 1117
 1118        public ref BoundsInt GetBoundsIntRef(int row, int column)
 01119        {
 01120            return ref GetCellRef(row, column, ref allBoundsIntColumns);
 01121        }
 1122
 1123        public ref Hash128 GetHash128Ref(int row, int column)
 01124        {
 01125            return ref GetCellRef(row, column, ref allHash128Columns);
 01126        }
 1127
 1128        public ref Gradient GetGradientRef(int row, int column)
 01129        {
 01130            return ref GetCellRef(row, column, ref allGradientColumns);
 01131        }
 1132
 1133        public ref AnimationCurve GetAnimationCurveRef(int row, int column)
 01134        {
 01135            return ref GetCellRef(row, column, ref allAnimationCurveColumns);
 01136        }
 1137
 1138        public ref UnityEngine.Object GetObjectRef(int row, int column)
 01139        {
 01140            return ref GetCellRef(row, column, ref allObjectRefColumns);
 01141        }
 1142
 1143        // Get Column
 1144
 1145        public string[] GetStringColumn(int column)
 01146        {
 01147            return GetColumn(column, ref allStringColumns);
 01148        }
 1149
 1150        public bool[] GetBoolColumn(int column)
 01151        {
 01152            return GetColumn(column, ref allBoolColumns);
 01153        }
 1154
 1155        public char[] GetCharColumn(int column)
 01156        {
 01157            return GetColumn(column, ref allCharColumns);
 01158        }
 1159
 1160        public sbyte[] GetSbyteColumn(int column)
 01161        {
 01162            return GetColumn(column, ref allSbyteColumns);
 01163        }
 1164
 1165        public byte[] GetByteColumn(int column)
 01166        {
 01167            return GetColumn(column, ref allByteColumns);
 01168        }
 1169
 1170        public short[] GetShortColumn(int column)
 01171        {
 01172            return GetColumn(column, ref allShortColumns);
 01173        }
 1174
 1175        public ushort[] GetUshortColumn(int column)
 01176        {
 01177            return GetColumn(column, ref allUshortColumns);
 01178        }
 1179
 1180        public int[] GetIntColumn(int column)
 01181        {
 01182            return GetColumn(column, ref allIntColumns);
 01183        }
 1184
 1185        public uint[] GetUintColumn(int column)
 01186        {
 01187            return GetColumn(column, ref allUintColumns);
 01188        }
 1189
 1190        public long[] GetLongColumn(int column)
 01191        {
 01192            return GetColumn(column, ref allLongColumns);
 01193        }
 1194
 1195        public ulong[] GetUlongColumn(int column)
 01196        {
 01197            return GetColumn(column, ref allUlongColumns);
 01198        }
 1199
 1200        public float[] GetFloatColumn(int column)
 01201        {
 01202            return GetColumn(column, ref allFloatColumns);
 01203        }
 1204
 1205        public double[] GetDoubleColumn(int column)
 01206        {
 01207            return GetColumn(column, ref allDoubleColumns);
 01208        }
 1209
 1210        public Vector2[] GetVector2Column(int column)
 01211        {
 01212            return GetColumn(column, ref allVector2Columns);
 01213        }
 1214
 1215        public Vector3[] GetVector3Column(int column)
 01216        {
 01217            return GetColumn(column, ref allVector3Columns);
 01218        }
 1219
 1220        public Vector4[] GetVector4Column(int column)
 01221        {
 01222            return GetColumn(column, ref allVector4Columns);
 01223        }
 1224
 1225        public Vector2Int[] GetVector2IntColumn(int column)
 01226        {
 01227            return GetColumn(column, ref allVector2IntColumns);
 01228        }
 1229
 1230        public Vector3Int[] GetVector3IntColumn(int column)
 01231        {
 01232            return GetColumn(column, ref allVector3IntColumns);
 01233        }
 1234
 1235        public Quaternion[] GetQuaternionColumn(int column)
 01236        {
 01237            return GetColumn(column, ref allQuaternionColumns);
 01238        }
 1239
 1240        public Rect[] GetRectColumn(int column)
 01241        {
 01242            return GetColumn(column, ref allRectColumns);
 01243        }
 1244
 1245        public RectInt[] GetRectIntColumn(int column)
 01246        {
 01247            return GetColumn(column, ref allRectIntColumns);
 01248        }
 1249
 1250        public Color[] GetColorColumn(int column)
 01251        {
 01252            return GetColumn(column, ref allColorColumns);
 01253        }
 1254
 1255        public LayerMask[] GetLayerMaskColumn(int column)
 01256        {
 01257            return GetColumn(column, ref allLayerMaskColumns);
 01258        }
 1259
 1260        public Bounds[] GetBoundsColumn(int column)
 01261        {
 01262            return GetColumn(column, ref allBoundsColumns);
 01263        }
 1264
 1265        public BoundsInt[] GetBoundsIntColumn(int column)
 01266        {
 01267            return GetColumn(column, ref allBoundsIntColumns);
 01268        }
 1269
 1270        public Hash128[] GetHash128Column(int column)
 01271        {
 01272            return GetColumn(column, ref allHash128Columns);
 01273        }
 1274
 1275        public Gradient[] GetGradientColumn(int column)
 01276        {
 01277            return GetColumn(column, ref allGradientColumns);
 01278        }
 1279
 1280        public AnimationCurve[] GetAnimationCurveColumn(int column)
 01281        {
 01282            return GetColumn(column, ref allAnimationCurveColumns);
 01283        }
 1284
 1285        public UnityEngine.Object[] GetObjectColumn(int column)
 01286        {
 01287            return GetColumn(column, ref allObjectRefColumns);
 01288        }
 1289
 1290        // Internal
 1291
 1292        internal int AddColumnInternal<T>(string columnName, ref ArrayHolder<T>[] allColumnsOfType, Serializable.Seriali
 01293        {
 01294            int columnCount = allColumnsOfType?.Length ?? 0;
 01295            Array.Resize(ref allColumnsOfType, columnCount + 1);
 01296            allColumnsOfType[columnCount].TArray = new T[rowCount];
 1297
 01298            string[] columnNamesForType = allColumnNames[(int)typeIndex].TArray;
 01299            int columnNamesCount = columnNamesForType?.Length ?? 0;
 01300            Array.Resize(ref columnNamesForType, columnNamesCount + 1);
 01301            columnNamesForType[columnNamesCount] = columnName;
 01302            allColumnNames[(int)typeIndex].TArray = columnNamesForType;
 1303
 01304            int columnID = columnEntriesFreeListHead;
 01305            int columnIDToDenseIndexMapLength = columnIDToDenseIndexMap?.Length ?? 0;
 01306            if (columnID >= columnIDToDenseIndexMapLength)
 01307            {
 01308                int newSize = columnIDToDenseIndexMapLength * 2;
 01309                newSize = newSize == 0 ? 1 : newSize;
 01310                Array.Resize(ref columnIDToDenseIndexMap, newSize);
 01311                for (int i = columnIDToDenseIndexMapLength; i < newSize; i++)
 01312                {
 01313                    ref ColumnEntry entry = ref columnIDToDenseIndexMap[i];
 01314                    entry.columnDenseIndex = i + 1;
 01315                    entry.ColumnType = Serializable.SerializableTypes.Invalid;
 01316                }
 1317
 01318                Array.Resize(ref columnIDToSortOrderMap, newSize);
 01319                for (int i = columnIDToDenseIndexMapLength; i < newSize; i++)
 01320                {
 01321                    columnIDToSortOrderMap[i] = -1;
 01322                }
 01323            }
 1324
 01325            ref int[] denseIndexToIDMap = ref columnDenseIndexToIDMap[(int)typeIndex].TArray;
 01326            int denseIndexToIDMapLength = denseIndexToIDMap?.Length ?? 0;
 01327            Array.Resize(ref denseIndexToIDMap, denseIndexToIDMapLength + 1);
 01328            denseIndexToIDMap[denseIndexToIDMapLength] = columnID;
 1329
 01330            ref ColumnEntry newEntry = ref columnIDToDenseIndexMap[columnID];
 01331            newEntry.columnDenseIndex = denseIndexToIDMapLength;
 01332            newEntry.ColumnType = typeIndex;
 1333
 01334            insertAtSortedIndex = insertAtSortedIndex < 0 ? combinedColumnCount : insertAtSortedIndex;
 01335            Array.Resize(ref sortedOrderToColumnIDMap, combinedColumnCount + 1);
 01336            for (int i = combinedColumnCount; i > insertAtSortedIndex; i--)
 01337            {
 01338                int currentColumnID = sortedOrderToColumnIDMap[i - 1];
 01339                sortedOrderToColumnIDMap[i] = currentColumnID;
 01340                columnIDToSortOrderMap[currentColumnID] = i;
 01341            }
 1342
 01343            columnEntriesFreeListHead = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 01344            columnIDToSortOrderMap[columnID] = insertAtSortedIndex;
 01345            sortedOrderToColumnIDMap[insertAtSortedIndex] = columnID;
 1346
 01347            ++combinedColumnCount;
 01348            dataVersion++;
 1349
 01350            return columnID;
 01351        }
 1352
 1353        internal void RemoveColumnInternal<T>(ref ArrayHolder<T>[] allColumnsOfType, Serializable.SerializableTypes type
 01354        {
 01355            int columnLocation = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 1356
 01357            int lastIndex = allColumnsOfType.Length - 1;
 01358            allColumnsOfType[columnLocation] = allColumnsOfType[lastIndex];
 01359            Array.Resize(ref allColumnsOfType, lastIndex);
 1360
 01361            ref string[] columnNamesOfType = ref allColumnNames[(int)typeIndex].TArray;
 01362            columnNamesOfType[columnLocation] = columnNamesOfType[lastIndex];
 01363            Array.Resize(ref columnNamesOfType, lastIndex);
 1364
 01365            int columnOrder = columnIDToSortOrderMap[columnID];
 1366
 01367            ref int[] denseIndicesOfType = ref columnDenseIndexToIDMap[(int)typeIndex].TArray;
 01368            int sparseIndexToSwap = denseIndicesOfType[lastIndex];
 1369
 01370            ref ColumnEntry sparseIndexToFree = ref columnIDToDenseIndexMap[columnID];
 01371            sparseIndexToFree.ColumnType = Serializable.SerializableTypes.Invalid;
 01372            sparseIndexToFree.columnDenseIndex = columnEntriesFreeListHead;
 01373            columnEntriesFreeListHead = columnID;
 1374
 01375            columnIDToDenseIndexMap[sparseIndexToSwap].columnDenseIndex = columnLocation;
 01376            denseIndicesOfType[columnLocation] = sparseIndexToSwap;
 01377            Array.Resize(ref denseIndicesOfType, lastIndex);
 1378
 01379            for (int i = columnOrder + 1; i < combinedColumnCount; i++)
 01380            {
 01381                int currentColumnID = sortedOrderToColumnIDMap[i];
 01382                sortedOrderToColumnIDMap[i - 1] = currentColumnID;
 01383                columnIDToSortOrderMap[currentColumnID] = i - 1;
 01384            }
 1385
 01386            Array.Resize(ref sortedOrderToColumnIDMap, combinedColumnCount - 1);
 1387
 01388            --combinedColumnCount;
 01389            dataVersion++;
 01390        }
 1391
 1392        internal void InsertRowsOfTypeInternal<T>(ref ArrayHolder<T>[] allColumnsOfType, int insertAt, int numberOfNewRo
 01393        {
 01394            int columnCount = allColumnsOfType?.Length ?? 0;
 01395            for (int i = 0; i < columnCount; i++)
 01396            {
 01397                ref T[] column = ref allColumnsOfType[i].TArray;
 01398                int newRowCount = rowCount + numberOfNewRows;
 01399                Array.Resize(ref column, newRowCount);
 01400                for (int j = newRowCount - 1; j > insertAt + numberOfNewRows - 1; j--)
 01401                {
 01402                    column[j] = column[j - numberOfNewRows];
 01403                }
 1404
 01405                for (int j = 0; j < numberOfNewRows; j++)
 01406                {
 01407                    column[insertAt + j] = default;
 01408                }
 01409            }
 01410        }
 1411
 1412        internal void DeleteRowsOfTypeInternal<T>(ref ArrayHolder<T>[] allColumnsOfType, int removeAt, int numberOfRowsT
 01413        {
 01414            int columnCount = allColumnsOfType?.Length ?? 0;
 1415
 01416            for (int i = 0; i < columnCount; i++)
 01417            {
 01418                ref T[] column = ref allColumnsOfType[i].TArray;
 01419                int newRowCount = rowCount - numberOfRowsToDelete;
 1420
 01421                for (int j = removeAt; j < rowCount - numberOfRowsToDelete; j++)
 01422                {
 01423                    column[j] = column[j + numberOfRowsToDelete];
 01424                }
 1425
 01426                Array.Resize(ref column, newRowCount);
 01427            }
 01428        }
 1429
 1430        internal ref T GetCellRef<T>(int rowID, int columnID, ref ArrayHolder<T>[] allColumnsOfType)
 01431        {
 01432            int column = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 01433            return ref allColumnsOfType[column][rowID];
 01434        }
 1435
 1436        internal T GetCell<T>(int rowID, int columnID, ref ArrayHolder<T>[] allColumnsOfType)
 01437        {
 01438            int column = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 01439            return allColumnsOfType[column][rowID];
 01440        }
 1441
 1442        internal ulong SetCell<T>(int rowID, int columnID, ref ArrayHolder<T>[] allColumnsOfType, T value)
 01443        {
 01444            int column = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 01445            allColumnsOfType[column][rowID] = value;
 01446            dataVersion++;
 01447            return dataVersion;
 01448        }
 1449
 1450        internal T[] GetColumn<T>(int columnID, ref ArrayHolder<T>[] allColumnsOfType)
 01451        {
 01452            int column = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 01453            return allColumnsOfType[column].TArray;
 01454        }
 1455    }
 1456}

Coverage by test methods





































































































































































































































































































































































































































































































































































































































































































Methods/Properties

StableTable()
GetDataVersion()
GetColumnCount()
GetRowCount()
GetAllRowDescriptions()
GetRowDescription(System.String)
GetRowDescription(System.Int32)
GetColumnDescription(System.String)
GetColumnDescription(System.Int32)
GetAllColumnDescriptions()
SetColumnName(System.String, System.Int32)
GetColumnName(System.Int32)
GetColumnNameRef(System.Int32)
AddRow(System.String, System.Int32)
AddRows(System.Int32, System.String[], System.Int32)
AddRows(System.Int32, System.Int32[]&, System.String[], System.Int32)
RemoveRow(System.Int32)
AddColumn(GDX.Serializable/SerializableTypes, System.String, System.Int32)
RemoveColumn(GDX.Serializable/SerializableTypes, System.Int32)
SetString(System.Int32, System.Int32, System.String)
SetBool(System.Int32, System.Int32, System.Boolean)
SetChar(System.Int32, System.Int32, System.Char)
SetSByte(System.Int32, System.Int32, System.SByte)
SetByte(System.Int32, System.Int32, System.Byte)
SetShort(System.Int32, System.Int32, System.Int16)
SetUShort(System.Int32, System.Int32, System.UInt16)
SetInt(System.Int32, System.Int32, System.Int32)
SetUInt(System.Int32, System.Int32, System.UInt32)
SetLong(System.Int32, System.Int32, System.Int64)
SetULong(System.Int32, System.Int32, System.UInt64)
SetFloat(System.Int32, System.Int32, System.Single)
SetDouble(System.Int32, System.Int32, System.Double)
SetVector2(System.Int32, System.Int32, UnityEngine.Vector2)
SetVector3(System.Int32, System.Int32, UnityEngine.Vector3)
SetVector4(System.Int32, System.Int32, UnityEngine.Vector4)
SetVector2Int(System.Int32, System.Int32, UnityEngine.Vector2Int)
SetVector3Int(System.Int32, System.Int32, UnityEngine.Vector3Int)
SetQuaternion(System.Int32, System.Int32, UnityEngine.Quaternion)
SetRect(System.Int32, System.Int32, UnityEngine.Rect)
SetRectInt(System.Int32, System.Int32, UnityEngine.RectInt)
SetColor(System.Int32, System.Int32, UnityEngine.Color)
SetLayerMask(System.Int32, System.Int32, UnityEngine.LayerMask)
SetBounds(System.Int32, System.Int32, UnityEngine.Bounds)
SetBoundsInt(System.Int32, System.Int32, UnityEngine.BoundsInt)
SetHash128(System.Int32, System.Int32, UnityEngine.Hash128)
SetGradient(System.Int32, System.Int32, UnityEngine.Gradient)
SetAnimationCurve(System.Int32, System.Int32, UnityEngine.AnimationCurve)
SetObject(System.Int32, System.Int32, UnityEngine.Object)
GetString(System.Int32, System.Int32)
GetBool(System.Int32, System.Int32)
GetChar(System.Int32, System.Int32)
GetSByte(System.Int32, System.Int32)
GetByte(System.Int32, System.Int32)
GetShort(System.Int32, System.Int32)
GetUShort(System.Int32, System.Int32)
GetInt(System.Int32, System.Int32)
GetUInt(System.Int32, System.Int32)
GetLong(System.Int32, System.Int32)
GetULong(System.Int32, System.Int32)
GetFloat(System.Int32, System.Int32)
GetDouble(System.Int32, System.Int32)
GetVector2(System.Int32, System.Int32)
GetVector3(System.Int32, System.Int32)
GetVector4(System.Int32, System.Int32)
GetVector2Int(System.Int32, System.Int32)
GetVector3Int(System.Int32, System.Int32)
GetQuaternion(System.Int32, System.Int32)
GetRect(System.Int32, System.Int32)
GetRectInt(System.Int32, System.Int32)
GetColor(System.Int32, System.Int32)
GetLayerMask(System.Int32, System.Int32)
GetBounds(System.Int32, System.Int32)
GetBoundsInt(System.Int32, System.Int32)
GetHash128(System.Int32, System.Int32)
GetGradient(System.Int32, System.Int32)
GetAnimationCurve(System.Int32, System.Int32)
GetObject(System.Int32, System.Int32)
GetStringRef(System.Int32, System.Int32)
GetBoolRef(System.Int32, System.Int32)
GetCharRef(System.Int32, System.Int32)
GetSbyteRef(System.Int32, System.Int32)
GetByteRef(System.Int32, System.Int32)
GetShortRef(System.Int32, System.Int32)
GetUshortRef(System.Int32, System.Int32)
GetIntRef(System.Int32, System.Int32)
GetUintRef(System.Int32, System.Int32)
GetLongRef(System.Int32, System.Int32)
GetUlongRef(System.Int32, System.Int32)
GetFloatRef(System.Int32, System.Int32)
GetDoubleRef(System.Int32, System.Int32)
GetVector2Ref(System.Int32, System.Int32)
GetVector3Ref(System.Int32, System.Int32)
GetVector4Ref(System.Int32, System.Int32)
GetVector2IntRef(System.Int32, System.Int32)
GetVector3IntRef(System.Int32, System.Int32)
GetQuaternionRef(System.Int32, System.Int32)
GetRectRef(System.Int32, System.Int32)
GetRectIntRef(System.Int32, System.Int32)
GetColorRef(System.Int32, System.Int32)
GetLayerMaskRef(System.Int32, System.Int32)
GetBoundsRef(System.Int32, System.Int32)
GetBoundsIntRef(System.Int32, System.Int32)
GetHash128Ref(System.Int32, System.Int32)
GetGradientRef(System.Int32, System.Int32)
GetAnimationCurveRef(System.Int32, System.Int32)
GetObjectRef(System.Int32, System.Int32)
GetStringColumn(System.Int32)
GetBoolColumn(System.Int32)
GetCharColumn(System.Int32)
GetSbyteColumn(System.Int32)
GetByteColumn(System.Int32)
GetShortColumn(System.Int32)
GetUshortColumn(System.Int32)
GetIntColumn(System.Int32)
GetUintColumn(System.Int32)
GetLongColumn(System.Int32)
GetUlongColumn(System.Int32)
GetFloatColumn(System.Int32)
GetDoubleColumn(System.Int32)
GetVector2Column(System.Int32)
GetVector3Column(System.Int32)
GetVector4Column(System.Int32)
GetVector2IntColumn(System.Int32)
GetVector3IntColumn(System.Int32)
GetQuaternionColumn(System.Int32)
GetRectColumn(System.Int32)
GetRectIntColumn(System.Int32)
GetColorColumn(System.Int32)
GetLayerMaskColumn(System.Int32)
GetBoundsColumn(System.Int32)
GetBoundsIntColumn(System.Int32)
GetHash128Column(System.Int32)
GetGradientColumn(System.Int32)
GetAnimationCurveColumn(System.Int32)
GetObjectColumn(System.Int32)
AddColumnInternal[T](System.String, , GDX.Serializable/SerializableTypes, System.Int32)
RemoveColumnInternal[T](, GDX.Serializable/SerializableTypes, System.Int32)
InsertRowsOfTypeInternal[T](, System.Int32, System.Int32)
DeleteRowsOfTypeInternal[T](, System.Int32, System.Int32)
GetCellRef[T](System.Int32, System.Int32, )
GetCell[T](System.Int32, System.Int32, )
SetCell[T](System.Int32, System.Int32, , T)
GetColumn[T](System.Int32, )